Skip to content

OCPEDGE-2747: feat: add topology transition controller for day-2 SNO to HA transitions#495

Open
jeff-roche wants to merge 4 commits into
openshift:mainfrom
jeff-roche:mutable-topology-controller
Open

OCPEDGE-2747: feat: add topology transition controller for day-2 SNO to HA transitions#495
jeff-roche wants to merge 4 commits into
openshift:mainfrom
jeff-roche:mutable-topology-controller

Conversation

@jeff-roche

@jeff-roche jeff-roche commented Jun 26, 2026

Copy link
Copy Markdown

Summary

  • Vendors updated openshift/api (Infrastructure spec.controlPlaneTopology, MutableTopology feature gate) and openshift/client-go (operator clientset, informers, listers for Etcd CR access)
  • Adds a new TopologyTransitionController gated behind the MutableTopology feature gate that manages day-2 control plane topology transitions (initial: SNO → HA Compact on platform type None)
  • Wires the controller into RunOperator with dedicated informer factories for the Etcd operator CR and openshift-etcd ConfigMaps

Controller behavior

  1. Preflight validation — verifies control plane node count, readiness, schedulability, etcd quorum, voting members, and absence of dedicated workers before allowing a transition
  2. Condition management — sets TopologyTransitionControllerProgressing and TopologyTransitionControllerUpgradeable conditions to block cluster upgrades during transitions
  3. Status update — applies the topology change to Infrastructure status with conflict retry and spec-change detection
  4. Reconciliation monitoring — waits for all ClusterOperators to stabilize (Available=True, Progressing=False, Degraded=False) with a 5-minute soak timer before re-enabling upgrades
  5. Crash recovery — handles partial failures where operator conditions were set but the Infrastructure status update didn't complete

Test plan

  • Unit tests pass: go test -v -count=1 ./pkg/operator/topology_transition_controller/... (46 tests covering controller sync, preflight validators, reconciliation checks, soak timer, crash recovery, and spec-change-during-retry)
  • make build succeeds
  • make verify passes (gofmt, govet, deps, bindata)
  • E2E: deploy on a SNO cluster with MutableTopology feature gate enabled, scale to 3 control plane nodes, set spec.controlPlaneTopology: HighlyAvailable, verify transition completes and upgrades are re-enabled

Assisted-by: Claude noreply@anthropic.com

Summary by CodeRabbit

  • New Features
    • Added day-2 control-plane topology transition management (e.g., SNO → HA), including progress/upgradeability condition handling and topology status updates.
    • Introduced global and transition-specific preflight validation for control-plane readiness/schedulability, etcd quorum/voting, and overall cluster-operator stability.
    • Runs the transition controller only when the related feature gate is enabled.
  • Bug Fixes
    • Improved safety around concurrent spec/status changes and added soak-window reconciliation gating.
  • Tests
    • Expanded transition, preflight, stability, and matcher test coverage with additional edge cases.
  • Chores
    • Updated Go dependencies and versions.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 26, 2026
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Walkthrough

This PR updates dependency versions, adds a topology transition controller, wires it into operator startup behind a feature gate, and expands tests and fixtures for transition matching, preflight validation, reconciliation, and SNO-to-HA scenarios.

Changes

Topology transition controller

Layer / File(s) Summary
Dependency refresh
go.mod
go.mod updates OpenShift, Kubernetes, OpenAPI, golang.org/x, logging, and related indirect dependencies.
Transition model and matching
pkg/operator/topology_transition_controller/types.go, pkg/operator/topology_transition_controller/transition_reconciliation.go, pkg/operator/topology_transition_controller/transition_reconciliation_test.go
Transition descriptors, supported transition wiring, status/spec matching, and cluster-operator stability reconciliation are added and tested.
Preflight validation
pkg/operator/topology_transition_controller/transition_preflight_checks.go, pkg/operator/topology_transition_controller/transition_preflight_checks_test.go
Preflight checks validate node, etcd, and cluster-operator state, with tests for each validator and combined error handling.
Controller runtime and sync flow
pkg/operator/topology_transition_controller/topology_transition_controller.go, pkg/operator/topology_transition_controller/topology_transition_controller_test.go
The controller sync loop handles requested transitions, condition updates, soak timing, reconciliation completion, and conflict retries, with expanded sync coverage.
Startup wiring and scenario coverage
pkg/operator/starter.go, pkg/operator/topology_transition_controller/test_helpers_test.go, pkg/operator/topology_transition_controller/transitions_test.go
Operator startup now wires the controller when the feature gate is enabled, and shared fixtures plus SNO-to-HA scenario tests exercise success and failure paths.

Estimated code review effort: 4 (Complex) | ~60 minutes

🚥 Pre-merge checks | ✅ 14 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 35.71% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding a topology transition controller for day-2 SNO-to-HA transitions.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed All added test titles are static string literals; no dynamic names, timestamps, UUIDs, node/namespace/IP values, or fmt.Sprintf-generated titles were found.
Test Structure And Quality ✅ Passed No Ginkgo tests were added; the new package uses plain table-driven Go unit tests with fakes, no cluster resources, and no Eventually/timeout issues, so this check is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the changed tests are standard Go unit tests using testing, so this MicroShift check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed Added tests are plain Go unit tests (testing/assert), not Ginkgo e2e, and no new SNO-sensitive e2e assumptions were found.
Topology-Aware Scheduling Compatibility ✅ Passed No new scheduling constraints were added; the PR only gates a topology transition using explicit topology and node-readiness checks.
Ote Binary Stdout Contract ✅ Passed No stdout writes were added in main/init/TestMain/BeforeSuite or similar setup; the new tests are plain unit tests and the touched controller code only logs inside RunOperator.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the changes are standard Go unit tests under pkg/operator/topology_transition_controller with no external connectivity.
No-Weak-Crypto ✅ Passed Changed files add topology-transition logic only; scans found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, crypto imports, or token/secret comparisons.
Container-Privileges ✅ Passed PR only changes Go sources/go.mod; no container/K8s manifests or privilege fields (privileged, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, root) were added.
No-Sensitive-Data-In-Logs ✅ Passed New logs/events are generic topology and status messages; no passwords, tokens, PII, hostnames, or customer data are logged.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@openshift-ci openshift-ci Bot requested review from JoelSpeed and p0lyn0mial June 26, 2026 12:32
@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: jeff-roche
Once this PR has been reviewed and has the lgtm label, please assign deads2k for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jeff-roche jeff-roche changed the title feat: add topology transition controller for day-2 SNO to HA transitions [WIP] OCPEDGE-2747: feat: add topology transition controller for day-2 SNO to HA transitions Jun 26, 2026
@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 26, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 26, 2026
@openshift-ci-robot

openshift-ci-robot commented Jun 26, 2026

Copy link
Copy Markdown

@jeff-roche: This pull request references OCPEDGE-2747 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Vendors updated openshift/api (Infrastructure spec.controlPlaneTopology, MutableTopology feature gate) and openshift/client-go (operator clientset, informers, listers for Etcd CR access)
  • Adds a new TopologyTransitionController gated behind the MutableTopology feature gate that manages day-2 control plane topology transitions (initial: SNO → HA Compact on platform type None)
  • Wires the controller into RunOperator with dedicated informer factories for the Etcd operator CR and openshift-etcd ConfigMaps

Controller behavior

  1. Preflight validation — verifies control plane node count, readiness, schedulability, etcd quorum, voting members, and absence of dedicated workers before allowing a transition
  2. Condition management — sets TopologyTransitionControllerProgressing and TopologyTransitionControllerUpgradeable conditions to block cluster upgrades during transitions
  3. Status update — applies the topology change to Infrastructure status with conflict retry and spec-change detection
  4. Reconciliation monitoring — waits for all ClusterOperators to stabilize (Available=True, Progressing=False, Degraded=False) with a 5-minute soak timer before re-enabling upgrades
  5. Crash recovery — handles partial failures where operator conditions were set but the Infrastructure status update didn't complete

Test plan

  • Unit tests pass: go test -v -count=1 ./pkg/operator/topology_transition_controller/... (46 tests covering controller sync, preflight validators, reconciliation checks, soak timer, crash recovery, and spec-change-during-retry)
  • make build succeeds
  • make verify passes (gofmt, govet, deps, bindata)
  • E2E: deploy on a SNO cluster with MutableTopology feature gate enabled, scale to 3 control plane nodes, set spec.controlPlaneTopology: HighlyAvailable, verify transition completes and upgrades are re-enabled

Assisted-by: Claude noreply@anthropic.com

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
pkg/operator/topology_transition_controller/transition_preflight_checks.go (1)

35-49: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Optional: extract the duplicated control-plane node listing.

The control-plane label selector + nodeLister.List + error-wrap block is repeated verbatim in validateControlPlaneNodeCount, validateControlPlaneNodesSchedulable, and validateControlPlaneNodesReady. A small listControlPlaneNodes(nodeLister) helper would remove the duplication and keep the selector key in one place.

Also applies to: 131-180

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/operator/topology_transition_controller/transition_preflight_checks.go`
around lines 35 - 49, The control-plane node lookup logic is duplicated across
validateControlPlaneNodeCount, validateControlPlaneNodesSchedulable, and
validateControlPlaneNodesReady; extract the shared labels.SelectorFromSet plus
nodeLister.List and wrapped error handling into a small listControlPlaneNodes
helper. Update the three TransitionValidatorFunc implementations to call that
helper so the control-plane selector key and list/error behavior live in one
place.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Around line 125-130: `go.mod` has been updated with new dependency versions,
but the corresponding `go.sum` entries are missing or not refreshed. Update the
dependency lock/checksum data in `go.sum` to match the changes in `go.mod`,
especially for `sigs.k8s.io/structured-merge-diff/v6` and the other
Kubernetes/OpenShift modules listed here. Make sure the module checksum file is
regenerated/committed together with the `go.mod` update so the dependency set
stays consistent and reproducible.

In `@pkg/operator/starter.go`:
- Around line 288-302: The topology transition controller is using the Nodes
informer from kubeInformersForNamespaces after that factory has already been
started, so the informer never runs and cache sync can stall. Update the
controller setup in starter.go around the topologyTransitionController
construction to ensure kubeInformersForNamespaces is started again after
registering the Nodes informer, alongside the existing operatorInformers and
kubeInformersForEtcd starts, so the late-bound informer is active before Run is
invoked.

In `@pkg/operator/topology_transition_controller/test_helpers_test.go`:
- Around line 243-245: The fixture helpers are ignoring failures from
cache.Indexer.Add, which can leave the lister/indexer state incomplete and hide
bad test objects. Update the helper paths that build indexers for infra-related
fixtures to handle the Add error explicitly, either by panicking immediately in
the helper or by passing testing.T into the helper and asserting no error. Make
sure the fix is applied consistently in the helper functions around the
Indexer.Add calls so malformed objects fail fast instead of silently continuing.

In
`@pkg/operator/topology_transition_controller/topology_transition_controller.go`:
- Line 122: The TopologyTransitionInProgress sentinel is duplicated as a string
literal in the reconciliation check and the status update path, so extract it
into a shared constant and use that constant in both places. Update the logic in
topology_transition_controller’s reconciliation flow that compares
upgCond.Reason, and the code that sets the reason value, to reference the same
named constant. This keeps the crash-recovery branch and the writer path coupled
through the symbol instead of raw string equality.

---

Nitpick comments:
In `@pkg/operator/topology_transition_controller/transition_preflight_checks.go`:
- Around line 35-49: The control-plane node lookup logic is duplicated across
validateControlPlaneNodeCount, validateControlPlaneNodesSchedulable, and
validateControlPlaneNodesReady; extract the shared labels.SelectorFromSet plus
nodeLister.List and wrapped error handling into a small listControlPlaneNodes
helper. Update the three TransitionValidatorFunc implementations to call that
helper so the control-plane selector key and list/error behavior live in one
place.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

Comment thread go.mod
Comment thread pkg/operator/starter.go
Comment thread pkg/operator/topology_transition_controller/test_helpers_test.go
Comment thread pkg/operator/topology_transition_controller/topology_transition_controller.go Outdated
@jeff-roche jeff-roche force-pushed the mutable-topology-controller branch from e3af35b to 03133db Compare June 26, 2026 12:44
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 26, 2026
Adds a new controller gated behind the MutableTopology feature gate that
manages control plane topology transitions. The initial supported
transition is SNO to HA Compact on platform type None.

The controller validates preflight conditions (node count, readiness,
schedulability, etcd quorum and voting members), updates Infrastructure
status, blocks upgrades during transitions, and monitors downstream
operator reconciliation with a soak timer before re-enabling upgrades.

Includes vendor updates for openshift/api (Infrastructure
spec.controlPlaneTopology, MutableTopology feature gate) and
openshift/client-go (operator clientset, informers, listers for Etcd
CR access).

Assisted-by: Claude <noreply@anthropic.com>
@jeff-roche jeff-roche force-pushed the mutable-topology-controller branch from 03133db to a804d91 Compare June 26, 2026 12:57
…nsitions

Extract a shared checkClusterOperatorsStable core used by both the
preflight validator (blocks transition when operators are unstable) and
the post-transition reconciliation check. The preflight runs as a global
check for all transitions, reporting per-operator details (name and
which conditions are wrong) so users know what to fix before retrying.

Assisted-by: Claude <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/operator/topology_transition_controller/transition_preflight_checks.go`:
- Around line 46-48: The node validation logic only matches
`node-role.kubernetes.io/control-plane`, which causes legacy
`node-role.kubernetes.io/master` control-plane nodes to be missed and
miscounted. Update the selectors used in the preflight checks so they consider
both role labels consistently, including the schedulable/ready checks and the
worker-exclusion logic in `transition_preflight_checks.go`. Reuse or introduce a
small helper around the existing node selector construction so the same matching
behavior is applied wherever control-plane nodes are counted or excluded.
- Around line 179-200: The stability check in the shared cluster-operator
validation logic is too permissive because it only flags Progressing=True and
Degraded=True, so missing or Unknown values still pass. Update the condition
scan in the helper used by validateClusterOperatorsStable and
reconcileClusterOperatorsStable to explicitly require Progressing=False and
Degraded=False, and treat missing/Unknown statuses as issues alongside
Available. Add regression tests covering missing and Unknown
Progressing/Degraded conditions to lock in the contract.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6fb30a46-336b-479f-913d-a154f8252255

📥 Commits

Reviewing files that changed from the base of the PR and between e3af35b and c9cf8b2.

⛔ Files ignored due to path filters (503)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/emicklei/go-restful/v3/.travis.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/CHANGES.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/curly.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/custom_verb.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/emicklei/go-restful/v3/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.codecov.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.mockery.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/cmd_utils.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/cmdutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/format.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/sizeof.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv/type_constraints.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/conv_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/convert.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils/path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/fileutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work is excluded by !**/*.work, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work.sum is excluded by !**/*.sum, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/name_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/ifaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/ifaces/registry_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/registry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/adapter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/adapters/stdlib/json/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/concat.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/json.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/loading.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/loading_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/BENCHMARK.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/initialism_index.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/name_mangler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/pools.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/string_bytes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/name_lexem.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils/net.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/netutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/split.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/collection_formats.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils/strings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/stringutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/typeutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/ordered_map.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils/yaml.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/yamlutils_iface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/intern.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/josharian/intern/license.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/buffer/pool.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/bytestostr_nounsafe.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jlexer/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mailru/easyjson/jwriter/writer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/.ci-operator.yaml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/Dockerfile.ocp is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/Makefile is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/apiextensions/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/apiextensions/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/apiserver/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/apiserver/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/apps/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/apps/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/authorization/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/authorization/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/build/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/build/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/cloudnetwork/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/cloudnetwork/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_apiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_authentication.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_cluster_operator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_cluster_version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_crio_credential_provider_config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_image.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_infrastructure.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_kmsencryption.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_network.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/types_tlssecurityprofile.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1/zz_generated.swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1alpha1/types_cluster_monitoring.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1alpha1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1alpha1/zz_generated.swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/config/v1alpha2/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/config/v1alpha2/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/console/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/console/v1/types_console_plugin.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/console/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/console/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/etcd/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/etcd/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/etcd/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/etcd/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/features.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/features/features.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/helm/v1beta1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/helm/v1beta1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/image/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/image/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/imageregistry/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/imageregistry/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/install.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/kubecontrolplane/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/kubecontrolplane/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/legacyconfig/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/legacyconfig/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/machine/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/machine/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/machine/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/machine/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/machine/v1beta1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/machine/v1beta1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/monitoring/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/monitoring/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/network/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/network/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/network/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/network/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/networkoperator/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/networkoperator/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/oauth/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/oauth/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/openshiftcontrolplane/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/openshiftcontrolplane/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/operator/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_authentication.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_csi_cluster_driver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_etcd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_ingresscontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_kmsencryption.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_kubeapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/types_openshiftapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/operator/v1/zz_generated.featuregated-crd-manifests.yaml is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/operator/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/operator/v1/zz_generated.swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/operator/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operator/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/operatorcontrolplane/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/operatorcontrolplane/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/osin/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/osin/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/project/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/project/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/quota/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/quota/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/route/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/route/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/samples/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/samples/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/security/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/security/v1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/security/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/securityinternal/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/securityinternal/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/servicecertsigner/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/servicecertsigner/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/sharedresource/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/sharedresource/v1alpha1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/template/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/template/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/api/user/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/api/user/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/backupjobreference.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapiinstallercomponent.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapiinstallercomponentimage.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapiinstallercomponentsource.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapiinstallerrevision.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapiinstallerrevisionmanifestsubstitution.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapispec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterapistatus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterversionoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterversionoperatorspec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/clusterversionoperatorstatus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/etcdbackup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/etcdbackupspec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/etcdbackupstatus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/imagecontentsourcepolicy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/imagecontentsourcepolicyspec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/olmspec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/olmstatus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/applyconfigurations/operator/v1alpha1/repositorydigestmirrors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/clientset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/scheme/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/scheme/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/authentication.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/cloudcredential.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/clustercsidriver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/console.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/csisnapshotcontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/dns.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/etcd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/generated_expansion.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/ingresscontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/insightsoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/kubeapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/kubecontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/kubescheduler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/kubestorageversionmigrator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/machineconfiguration.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/network.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/openshiftapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/openshiftcontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/operator_client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/serviceca.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/servicecatalogapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/servicecatalogcontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1/storage.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/clusterapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/clusterversionoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/etcdbackup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/generated_expansion.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/imagecontentsourcepolicy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/clientset/versioned/typed/operator/v1alpha1/operator_client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/factory.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/generic.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/internalinterfaces/factory_interfaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/interface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/authentication.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/cloudcredential.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/clustercsidriver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/console.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/csisnapshotcontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/dns.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/etcd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/ingresscontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/insightsoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/interface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/kubeapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/kubecontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/kubescheduler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/kubestorageversionmigrator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/machineconfiguration.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/network.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/openshiftapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/openshiftcontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/serviceca.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/servicecatalogapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/servicecatalogcontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1/storage.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1alpha1/clusterapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1alpha1/clusterversionoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1alpha1/etcdbackup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1alpha1/imagecontentsourcepolicy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1alpha1/interface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/informers/externalversions/operator/v1alpha1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/authentication.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/cloudcredential.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/clustercsidriver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/console.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/csisnapshotcontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/dns.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/etcd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/expansion_generated.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/ingresscontroller.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/insightsoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/kubeapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/kubecontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/kubescheduler.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/kubestorageversionmigrator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/machineconfiguration.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/network.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/openshiftapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/openshiftcontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/serviceca.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/servicecatalogapiserver.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/servicecatalogcontrollermanager.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1/storage.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1alpha1/clusterapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1alpha1/clusterversionoperator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1alpha1/etcdbackup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1alpha1/expansion_generated.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1alpha1/imagecontentsourcepolicy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/client-go/operator/listers/operator/v1alpha1/olm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/CHANGELOG.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/appveyor.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/entry.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/hooks.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/logger.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/logrus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_bsd.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_unix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_wasi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/terminal_check_wasip1.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/sirupsen/logrus/text_formatter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/spf13/pflag/flag.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/node.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/html/nodetype_string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go126.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/client_priority_go127.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/frame.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/internal/httpsfv/httpsfv.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/net/websocket/hybi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_other_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ioctl_signed.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ioctl_unsigned.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_solaris.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/syscall_unix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/types_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/windows/zsyscall_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/term/terminal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/cases/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/message/catalog/catalog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/message/catalog/dict.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/message/catalog/go19.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/message/catalog/gopre19.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/forminfo.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables10.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables11.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables12.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables15.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables17.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/text/unicode/norm/tables9.0.0.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/cursor.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/inspector.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/inspector/iter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/internal/serialize/keyvalues.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/internal/serialize/keyvalues_no_slog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/internal/serialize/keyvalues_slog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/klog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/klogr.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/klogr_slog.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/textlogger/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/klog/v2/textlogger/textlogger.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/builder/openapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/builder3/openapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/serialization.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/alias.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal_any.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal_default.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal_funcs.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal_inlined.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal_methods.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/arshal_time.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/encode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/fields.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/fold.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/intern.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/internal/internal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/internal/jsonflags/flags.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/internal/jsonopts/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/internal/jsonwire/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/internal/jsonwire/encode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/internal/jsonwire/wire.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/alias.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/encode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/export.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/pools.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/quote.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/state.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/jsontext/value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/migrate.sh is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/internal/third_party/go-json-experiment/json/value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/schemaconv/openapi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/schemaconv/proto_models.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/encoding.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/example.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/external_documentation.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/header.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/media_type.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/operation.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/parameter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/request_body.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/response.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/security_scheme.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/spec3/spec.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/header.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/info.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/items.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/operation.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/parameter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/path_item.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/paths.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/ref.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/response.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/responses.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/schema.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/security_scheme.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/swagger.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/validation/spec/tag.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/utils/buffer/ring_fixed.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/utils/clock/testing/fake_clock.go is excluded by !**/vendor/**, !vendor/**
  • vendor/modules.txt is excluded by !**/vendor/**, !vendor/**
  • vendor/sigs.k8s.io/structured-merge-diff/v6/schema/elements.go is excluded by !**/vendor/**, !vendor/**
  • vendor/sigs.k8s.io/structured-merge-diff/v6/typed/remove.go is excluded by !**/vendor/**, !vendor/**
  • vendor/sigs.k8s.io/structured-merge-diff/v6/value/reflectcache.go is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (11)
  • go.mod
  • pkg/operator/starter.go
  • pkg/operator/topology_transition_controller/test_helpers_test.go
  • pkg/operator/topology_transition_controller/topology_transition_controller.go
  • pkg/operator/topology_transition_controller/topology_transition_controller_test.go
  • pkg/operator/topology_transition_controller/transition_preflight_checks.go
  • pkg/operator/topology_transition_controller/transition_preflight_checks_test.go
  • pkg/operator/topology_transition_controller/transition_reconciliation.go
  • pkg/operator/topology_transition_controller/transition_reconciliation_test.go
  • pkg/operator/topology_transition_controller/transitions_test.go
  • pkg/operator/topology_transition_controller/types.go
🚧 Files skipped from review as they are similar to previous changes (7)
  • pkg/operator/topology_transition_controller/topology_transition_controller_test.go
  • pkg/operator/topology_transition_controller/types.go
  • pkg/operator/starter.go
  • pkg/operator/topology_transition_controller/transitions_test.go
  • pkg/operator/topology_transition_controller/test_helpers_test.go
  • pkg/operator/topology_transition_controller/topology_transition_controller.go
  • go.mod

Comment thread pkg/operator/topology_transition_controller/transition_preflight_checks.go Outdated
…ator conditions

Control-plane node selectors now match both node-role.kubernetes.io/control-plane
and the legacy node-role.kubernetes.io/master label via a shared helper, preventing
miscounts on clusters with unrenamed nodes. The cluster operator stability check
now requires Progressing=False and Degraded=False explicitly, treating missing or
Unknown conditions as unstable rather than silently passing.

Assisted-by: Claude <noreply@anthropic.com>
@openshift-ci

openshift-ci Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

@jeff-roche: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-ovn-techpreview ee97a0d link true /test e2e-aws-ovn-techpreview

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@jeff-roche

Copy link
Copy Markdown
Author

Testing Update

Utilizing this PR and some automation scripts our team has, I was able to successfully transition an SNO platform:none cluster to HA Compact. The only real snafu was I had to manually scale ingress because ingress get's it's replica count at install time and does not update post-install.

cc @JoelSpeed

@JoelSpeed

Copy link
Copy Markdown
Contributor

The only real snafu was I had to manually scale ingress because ingress get's it's replica count at install time and does not update post-install.

Is that something you think we should try to change?

@jaypoulz

jaypoulz commented Jul 6, 2026

Copy link
Copy Markdown

@JoelSpeed i raised this to the ingress team earlier this year and was told that's a bug. IIRC, it happens because the ingress hard-codes the number of replicas in the ingress-controller spec when it's first created. The easy workaround is to delete the the ingress controller definition. The better solution is to have ingress reconcile changes to topology. I don't think logic for handling that belongs in CCO.

Comment thread go.mod Outdated
module github.com/openshift/cluster-config-operator

go 1.25.0
go 1.25.5

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have to bump this patch version? IIUC it's best practice to leave this at .0

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was accidentally updated when pulling in the new api, will revert to .0

From: configv1.InfrastructureStatus{
ControlPlaneTopology: configv1.SingleReplicaTopologyMode,
InfrastructureTopology: configv1.SingleReplicaTopologyMode,
PlatformStatus: &configv1.PlatformStatus{Type: configv1.NonePlatformType},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we want to expand this to additional platforms, what will that look like here?

@jeff-roche jeff-roche Jul 8, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the definitive source for what are valid transitions and what gates them. When adding more you would expand the TransitionDescriptor array with your new values. Ex:

return []TransitionDescriptor{
    // SNO to HA Compact on platformType: None
    {
        From: configv1.InfrastructureStatus{
            // ...
        },
        To: configv1.InfrastructureSpec{
           // ...
        },
        Validators: []TransitionValidatorFunc{
            // ...
        },
        UpdateStatus: func(infra *configv1.Infrastructure) {
             // ...
        },
    },
    // SNO to HA Compact on platformType: BareMetal
    {
        From: configv1.InfrastructureStatus{
            // ...
        },
        To: configv1.InfrastructureSpec{
           // ...
        },
        Validators: []TransitionValidatorFunc{
            // ...
        },
        UpdateStatus: func(infra *configv1.Infrastructure) {
             // ...
        },
    },
}

I'm pretty open to data structure changes here since I know this could be come unwieldy in the future but I haven't come up with a method of simplifying it yet.

// minReconciliationSoakTime is the minimum time to wait after a transition
// starts before accepting reconciliation checks as passing. This prevents
// premature completion when downstream operators haven't started progressing yet.
minReconciliationSoakTime = 5 * time.Minute

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How did you choose 5 minutes?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arbitrary number based on time estimates from a manual transition

validateClusterOperatorsStable(clusterOperatorLister),
},
reconciliationChecks: []func(context.Context) (bool, error){
reconcileClusterOperatorsStable(clusterOperatorLister),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes me slightly nervous. If the cluster operators aren't stable, those instabilities will report up via those individual cluster operators. This implies to me that we might be duplicating the reporting, is that beneficial?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't report the individual co status's, this primarily stops the transition status from flipping to done before the cluster has stabilized. It does give a nice direct data point for admins to look for if the transition is done or not

Comment thread pkg/operator/topology_transition_controller/topology_transition_controller.go Outdated
Comment thread pkg/operator/topology_transition_controller/topology_transition_controller.go Outdated
Comment thread pkg/operator/topology_transition_controller/topology_transition_controller.go Outdated
Comment on lines +260 to +263
// Use the Progressing condition timestamp as the soak anchor. When
// Progressing is absent (safety-net path where the condition was lost),
// fall back to the Upgradeable condition — both are set at transition
// start, so either provides a valid lower bound.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And if neither exist?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case I'm not sure we'd have a reference point to start the soak cycle from so it can just continue on

Comment on lines +25 to +26
// transition-specific validators. Returns a combined error containing all
// validation failures.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is a combined error going to be readable? Are these ever likely to be transient errors or are they specific readable and actionable errors?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They should remain readable. Currently the only one is reconcileClusterOperatorsStable. These are defined at the controller level.

Comment on lines +181 to +185
// checkClusterOperatorsStable checks whether all ClusterOperators (except
// config-operator itself) have reached a stable state. Returns a list of
// descriptions for unstable operators (empty = all stable). This is the shared
// core used by both the preflight validator and the post-transition
// reconciliation check.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens if there are unrelated failures here?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pre-transition we require all cluster operators to be stable. In this case transition will be blocked
post-transition we want to make sure all operators get back to a stable state. If they don't something went wrong with the transition and the offending operator will be reported

@jaypoulz

jaypoulz commented Jul 7, 2026

Copy link
Copy Markdown

@jeff-roche I have more specifics about ingress:
The issue is that the number of replicas is hard coded in the ingresscontroller:

[ec2-user@aws-jpoulin-dev ~]$ oc get ingresscontroller/default -n openshift-ingress-operator -o yaml
apiVersion: operator.openshift.io/v1
kind: IngressController
metadata:
  creationTimestamp: "2026-07-07T16:10:50Z"
  finalizers:
  - ingresscontroller.operator.openshift.io/finalizer-ingresscontroller
  generation: 1
  name: default
  namespace: openshift-ingress-operator
  resourceVersion: "53360"
  uid: f860ce4b-0e44-4878-ba92-f7e72d132094
spec:
  clientTLS:
    clientCA:
      name: ""
    clientCertificatePolicy: ""
  closedClientConnectionPolicy: Continue
  httpCompression: {}
  httpEmptyRequestsPolicy: Respond
  httpErrorCodePages:
    name: ""
  idleConnectionTerminationPolicy: Immediate
  replicas: 1
  tuningOptions:
    reloadInterval: 0s
  unsupportedConfigOverrides: null

We need to patch ingress operator to either detect drift or not hard code this.

@jeff-roche jeff-roche changed the title [WIP] OCPEDGE-2747: feat: add topology transition controller for day-2 SNO to HA transitions OCPEDGE-2747: feat: add topology transition controller for day-2 SNO to HA transitions Jul 8, 2026
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 8, 2026
The if/else-to-switch refactor introduced three bugs: an || that should
have been && caused the transition-requested branch to be taken even
when spec already matched status, an unguarded FindOperatorCondition
call could nil-panic on the safety-net path, and the GetOperatorState
error was no longer checked. Also renames transitionCondition to
transitionProgressingCondition for clarity.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
pkg/operator/topology_transition_controller/transitions_test.go (1)

128-149: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider asserting cond.Status consistently across preflight failure subtests.

Five preflight failure subtests (lines 128, 151, 174, 197, 220) assert cond.Reason and cond.Message but skip assert.Equal(t, operatorv1.ConditionFalse, cond.Status), while the subtests at lines 60, 80, 243, and 272 do include it. Adding the Status assertion in all preflight failure cases would make the test suite more uniform and catch regressions where the condition is set to an unexpected status.

Also applies to: 151-172, 174-195, 197-218, 220-241

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/operator/topology_transition_controller/transitions_test.go` around lines
128 - 149, Add a consistent assertion for transitionProgressingCondition.Status
in all preflight failure subtests in transitions_test.go, including the control
plane node unschedulable case and the other similar cases, so they explicitly
verify operatorv1.ConditionFalse alongside Reason and Message. Update the
relevant t.Run blocks in the test fixture around ctrl.sync and
v1helpers.FindOperatorCondition to match the preflight failure assertions
already used in the other subtests.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@pkg/operator/topology_transition_controller/transitions_test.go`:
- Around line 128-149: Add a consistent assertion for
transitionProgressingCondition.Status in all preflight failure subtests in
transitions_test.go, including the control plane node unschedulable case and the
other similar cases, so they explicitly verify operatorv1.ConditionFalse
alongside Reason and Message. Update the relevant t.Run blocks in the test
fixture around ctrl.sync and v1helpers.FindOperatorCondition to match the
preflight failure assertions already used in the other subtests.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 6e0ed18f-cc7c-4313-a85f-2d7df320ecc8

📥 Commits

Reviewing files that changed from the base of the PR and between ee97a0d and ec4336d.

📒 Files selected for processing (5)
  • go.mod
  • pkg/operator/topology_transition_controller/test_helpers_test.go
  • pkg/operator/topology_transition_controller/topology_transition_controller.go
  • pkg/operator/topology_transition_controller/topology_transition_controller_test.go
  • pkg/operator/topology_transition_controller/transitions_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/operator/topology_transition_controller/topology_transition_controller.go
  • pkg/operator/topology_transition_controller/test_helpers_test.go
  • pkg/operator/topology_transition_controller/topology_transition_controller_test.go

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants